1. Field of the Invention
The invention relates generally to computer graphics. In particular, the invention relates to the collection of graphics data and sending the data to graphics hardware.
2. Related Art
The production of computer graphics images comprises two fundamental stages. The first is the generation of data that specifies a frame or scene, known hereinafter as scene data. The second is the rendering of an image for display, based on the scene data, by graphics hardware. Some current computer graphics systems utilize one processor to handle the generation of scene data, and another processor to send the scene data to the graphics hardware. The two stages typically take place alternately and in serial. Scene data is generated by the first processor. The second processor then sends the scene data to the geometry engine, the first module in a graphics hardware suite. The first processor then generates data for the next scene, which the second processor then sends to the geometry engine. The process continues in serial fashion.
This architecture has a number of drawbacks. First, there is an inherent inefficiency in the serial operation of the two processors. Each experiences an idle period when the other processor is acting. During such idle time, available processing power is unused. Moreover, throughput is limited. A frame can only be received by the geometry engine after the completion of both the scene data generation stage and the data sending stage, in sequence. Moreover, two processors are required. This contributes to the expense and complexity of a graphics system.
Hence there is a need for graphics system architecture wherein the collective processes of scene data generation and transmission are improved with respect to efficiency and throughput. In addition, such an architecture should minimize the amount of computing power necessary.
The invention described herein comprises a method, system, and computer program product for sending scene data to a geometry engine. A processor generates scene data for a frame in accordance with an application program, and writes the scene data to a first memory location, known hereinafter as an intermediate buffer. Scene data for the next frame is then generated and written to a second intermediate buffer, while a geometry engine concurrently reads and renders the scene data in the first intermediate buffer. Scene data for the following frame is then generated and written to the first intermediate buffer, while a geometry engine reads and renders the scene data in the second intermediate buffer. The process continues in this manner until the application program is finished executing.
The invention has the feature of reading and rendering scene data while simultaneously generating additional scene data.
The invention has the additional feature of generating and rendering scene data in a pipeline architecture.
Because of the pipeline architecture, the invention has the advantage of relatively high throughput in the processing of scene data.
The invention has the further advantage of requiring only a single processor to both generate scene data and make the scene data available to a geometry engine.
Further features and advantages of the invention as well as the operation of various embodiments of the present invention are described in detail below with reference to the accompanying drawings.